package com.dingding.service.activity.core.dao.impl;

import java.util.Date;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.dingding.common.core.base.dao.impl.BaseDaoImpl;
import com.dingding.common.core.beans.Coupon;
import com.dingding.common.core.util.ToolUtil;
import com.dingding.facde.activity.dto.UseCouponInfoDTO;
import com.dingding.facde.activity.dto.sql.UserCouponSQL;
import com.dingding.service.activity.core.dao.ICouponDao;

/**
 * 
 * @ClassName: CouponImpl 
 * @Description: 优惠券DAO实现
 * @author CHEHAUNBO 
 * @date 2016年2月3日 下午2:36:13
 * @since V1.8.1
 * 
 */
@Component("couponDao")
public class CouponDaoImpl extends BaseDaoImpl<Coupon> implements ICouponDao {

	/**
	 * @Title: getUseCouponInfo 
	 * @Description: 根据用户优惠券Id获取优惠券信息
	 * @param ucId 用户优惠券Id
	 * @author YHQ
	 * @return UseCouponInfoDTO    返回类型 
	 * @throws
	 */
	@Override
	@Transactional(readOnly = true)
	public UseCouponInfoDTO getUseCouponInfo(String ucId) {

		// 根据用户优惠券Id获取优惠券信息
		Object[] obj = null;
		try {
			obj = super.sqlQueryUnResultObj(UserCouponSQL.GET_USE_COUPON_INFO, ucId);
		} catch (Exception e) {
			log.error("根据用户优惠券Id获取优惠券信息时出现异常  类：" + this.getClass() + " getUseCouponInfo()", e);
			return null;
		}

		// 判断查询到的数据是否为空
		if (obj == null) {
			return null;
		}

		return this.typeConversion(obj);
	}

	/**
	 * @Title: typeConversion 
	 * @Description: 将Object[]类型转为UseCouponInfoDTO
	 * @param @param obj
	 * @param @return    设定文件 
	 * @author YHQ
	 * @return UseCouponInfoDTO    返回类型 
	 * @throws
	 */
	public UseCouponInfoDTO typeConversion(Object[] obj) {

		UseCouponInfoDTO useCouponInfoDTO = new UseCouponInfoDTO();

		// 优惠券类型
		if (obj[0] != null) {
			useCouponInfoDTO.setCouponName(obj[0].toString());
		}
		// 手机号
		if (obj[1] != null) {
			useCouponInfoDTO.setTellPhone(obj[1].toString());
		}
		// 过期时间
		if (obj[2] != null) {
			useCouponInfoDTO.setExpiredTime((Date) obj[2]);
		}
		// 用户优惠券状态
		if (obj[3] != null) {
			useCouponInfoDTO.setCouponStatus(ToolUtil.castInteger(obj[3]));
		}
		// 车辆类型
		if (obj[4] != null) {
			useCouponInfoDTO.setVehicleModel(obj[4].toString());
		}

		return useCouponInfoDTO;
	}

}
